package com.gs.study.task;

import org.springframework.scheduling.annotation.Scheduled;

/** 
 * @author gaoshang 
 * @date 创建时间：2018年5月18日 上午11:38:21 
 * @version 1.0 
 * @parameter  
 * @since  
 * @return  
 */
public class TestTask {
	/**
	 * 1、fixedDelay控制方法执行的间隔时间，是以上一次方法执行完开始算起，如上一次方法执行阻塞住了，那么直到上一次执行完，并间隔给定的时间后，执行下一次。
	 *2、fixedRate是按照一定的速率执行，是从上一次方法执行开始的时间算起，如果上一次方法阻塞住了，下一次也是不会执行，
	 *	 但是在阻塞这段时间内累计应该执行的次数，当不再阻塞时，一下子把这些全部执行掉，而后再按照固定速率继续执行。
	 *3、cron表达式可以定制化执行任务，但是执行的方式是与fixedDelay相近的，也是会按照上一次方法结束时间开始算起。
	 *
	 *
	 *"0 0 12 * * ?"    每天中午十二点触发
	 *"0 15 10 ? * *"    每天早上10：15触发
	 *"0 15 10 * * ?"    每天早上10：15触发
	 *"0 15 10 * * ? *"    每天早上10：15触发
	 *"0 15 10 * * ? 2005"    2005年的每天早上10：15触发
	 *"0 * 14 * * ?"    每天从下午2点开始到2点59分每分钟一次触发
	 *"0 0/5 14 * * ?"    每天从下午2点开始到2：55分结束每5分钟一次触发
	 *"0 0/5 14,18 * * ?"    每天的下午2点至2：55和6点至6点55分两个时间段内每5分钟一次触发
	 *"0 0-5 14 * * ?"    每天14:00至14:05每分钟一次触发
	 *"0 10,44 14 ? 3 WED"    三月的每周三的14：10和14：44触发
	 *"0 15 10 ? * MON-FRI"    每个周一、周二、周三、周四、周五的10：15触发
	 *
	 *
	 */
	
	
	@Scheduled(cron = "0 0 16 * * ?")
	public void depositJob() {
	  //执行代码
		System.out.println("定义一个按时间执行的定时任务，在每天16:00执行一次。");
	}
	
	/**
	 * 定义一个按一定频率执行的定时任务，每隔1分钟执行一次
	 */
	@Scheduled(fixedRate = 1000 * 60)
	public void job2() {
			System.out.println("定义一个按一定频率执行的定时任务，每隔1分钟执行一次。");
	}
	
	/**
	 * 定义一个按一定频率执行的定时任务，每隔1分钟执行一次，延迟1秒执行
	 */
	@Scheduled(fixedRate = 1000 * 60,initialDelay = 1000)
	public void updatePayRecords() {
		System.out.println("定义一个按一定频率执行的定时任务，每隔1分钟执行一次，延迟1秒执行");
	}

}
